From: Camila Ayres Date: Mon, 17 Mar 2025 16:22:52 +0000 (+0100) Subject: chore(migration): remove duplicated code when copying legacy config to new path. X-Git-Tag: archive/raspbian/3.16.7-1_deb13u1+rpi1~1^2~12^2^2~23^2~5 X-Git-Url: https://dgit.raspbian.org/%22http:/www.example.com/cgi/%22https://%22Program/%22http:/www.example.com/cgi/%22https:/%22Program?a=commitdiff_plain;h=de757bcdfbbf37bd693b1538754282bbb0b5d406;p=nextcloud-desktop.git chore(migration): remove duplicated code when copying legacy config to new path. Signed-off-by: Camila Ayres --- diff --git a/src/gui/application.cpp b/src/gui/application.cpp index ecaca4fb3..baa1be1f0 100644 --- a/src/gui/application.cpp +++ b/src/gui/application.cpp @@ -261,54 +261,21 @@ Application::Application(int &argc, char **argv) setWindowIcon(_theme->applicationIcon()); if (!ConfigFile().exists()) { - setApplicationName(_theme->appNameGUI()); - QString legacyDir = QStandardPaths::writableLocation(QStandardPaths::GenericConfigLocation) + "/" + APPLICATION_CONFIG_NAME; - - if (legacyDir.endsWith('/')) { - legacyDir.chop(1); // macOS 10.11.x does not like trailing slash for rename/move. - } - setApplicationName(_theme->appName()); - if (QFileInfo(legacyDir).isDir()) { - auto confDir = ConfigFile().configPath(); - - // macOS 10.11.x does not like trailing slash for rename/move. - if (confDir.endsWith('/')) { - confDir.chop(1); - } - - qCInfo(lcApplication) << "Migrating old config from" << legacyDir << "to" << confDir; - - if (!QFile::rename(legacyDir, confDir)) { - qCWarning(lcApplication) << "Failed to move the old config directory to its new location (" << legacyDir << "to" << confDir << ")"; - - // Try to move the files one by one - if (QFileInfo(confDir).isDir() || QDir().mkdir(confDir)) { - const QStringList filesList = QDir(legacyDir).entryList(QDir::Files); - qCInfo(lcApplication) << "Will move the individual files" << filesList; - for (const auto &name : filesList) { - if (!QFile::rename(legacyDir + "/" + name, confDir + "/" + name)) { - qCWarning(lcApplication) << "Fallback move of " << name << "also failed"; - } - } - } - } else { -#ifndef Q_OS_WIN - // Create a symbolic link so a downgrade of the client would still find the config. - QFile::link(confDir, legacyDir); -#endif - } + if (const auto genericConfigLocation = QStandardPaths::writableLocation(QStandardPaths::GenericConfigLocation) + "/" + APPLICATION_CONFIG_NAME; + setupConfigFolderFromLegacyLocation(genericConfigLocation)) { + qCWarning(lcApplication) << "Setup of config folder and files from legacy location" << genericConfigLocation << "failed."; } } else { - setupConfigFile(); + if (const auto appDataLocation = QStandardPaths::writableLocation(QStandardPaths::AppDataLocation); + setupConfigFolderFromLegacyLocation(appDataLocation)) { + qCWarning(lcApplication) << "Setup of config folder and files from legacy location" << appDataLocation << "failed."; + } } - if (_theme->doNotUseProxy()) { - ConfigFile().setProxyType(QNetworkProxy::NoProxy); - for (const auto &accountState : AccountManager::instance()->accounts()) { - if (accountState && accountState->account()) { - accountState->account()->setNetworkProxySetting(Account::AccountNetworkProxySetting::GlobalProxy); - } - } + // try to migrate legacy accounts and folders from a previous client version + // only copy the settings and check what should be skipped + if (ConfigFile().exists() && !configVersionMigration()) { + qCWarning(lcApplication) << "Config version migration was not possible."; } parseOptions(arguments()); @@ -341,12 +308,6 @@ Application::Application(int &argc, char **argv) setupLogging(); setupTranslations(); - // try to migrate legacy accounts and folders from a previous client version - // only copy the settings and check what should be skipped - if (!configVersionMigration()) { - qCWarning(lcApplication) << "Config version migration was not possible."; - } - ConfigFile cfg; { auto shouldExit = false; @@ -416,6 +377,14 @@ Application::Application(int &argc, char **argv) _gui->setupCloudProviders(); #endif + if (_theme->doNotUseProxy()) { + ConfigFile().setProxyType(QNetworkProxy::NoProxy); + for (const auto &accountState : AccountManager::instance()->accounts()) { + if (accountState && accountState->account()) { + accountState->account()->setNetworkProxySetting(Account::AccountNetworkProxySetting::GlobalProxy); + } + } + } _proxy.setupQtProxyFromConfig(); // folders have to be defined first, than we set up the Qt proxy. connect(AccountManager::instance(), &AccountManager::accountAdded, @@ -539,7 +508,7 @@ void Application::setupAccountsAndFolders() } } -void Application::setupConfigFile() +bool Application::setupConfigFolderFromLegacyLocation(const QString &legacyLocation) const { // Migrate from version <= 2.4 setApplicationName(_theme->appNameGUI()); @@ -551,42 +520,41 @@ void Application::setupConfigFile() QT_WARNING_POP setApplicationName(_theme->appName()); - auto oldDir = QStandardPaths::writableLocation(QStandardPaths::AppDataLocation); - - // macOS 10.11.x does not like trailing slash for rename/move. - if (oldDir.endsWith('/')) { - oldDir.chop(1); + auto legacyDir = legacyLocation; + if (legacyDir.endsWith('/')) { + legacyDir.chop(1); // macOS 10.11.x does not like trailing slash for rename/move. } - if (!QFileInfo(oldDir).isDir()) { - return; + if (!QFileInfo(legacyDir).isDir()) { + return false; } auto confDir = ConfigFile().configPath(); - - // macOS 10.11.x does not like trailing slash for rename/move. if (confDir.endsWith('/')) { confDir.chop(1); } - qCInfo(lcApplication) << "Migrating old config from" << oldDir << "to" << confDir; - if (!QFile::rename(oldDir, confDir)) { - qCWarning(lcApplication) << "Failed to move the old config directory to its new location (" << oldDir << "to" << confDir << ")"; - - // Try to move the files one by one + qCInfo(lcApplication) << "Migrating old config from" << legacyDir << "to" << confDir; + if (!QFile::rename(legacyDir, confDir)) { + qCWarning(lcApplication) << "Failed to move the old config directory" << legacyDir << "to new location" << confDir; if (QFileInfo(confDir).isDir() || QDir().mkdir(confDir)) { - const QStringList filesList = QDir(oldDir).entryList(QDir::Files); - qCInfo(lcApplication) << "Will move the individual files" << filesList; + const QStringList filesList = QDir(legacyDir).entryList(QDir::Files); + qCInfo(lcApplication) << "Will move the individual files:" << filesList; + auto setupCompleted = false; for (const auto &name : filesList) { - if (!QFile::rename(oldDir + "/" + name, confDir + "/" + name)) { - qCWarning(lcApplication) << "Fallback move of " << name << "also failed"; + if (!QFile::rename(legacyDir + "/" + name, confDir + "/" + name)) { + qCDebug(lcApplication) << "Fallback move of " << name << "also failed"; + continue; } + setupCompleted = true; + qCInfo(lcApplication) << "Move of " << name << "succeeded."; } + return setupCompleted; } } else { #ifndef Q_OS_WIN // Create a symbolic link so a downgrade of the client would still find the config. - QFile::link(confDir, oldDir); + return QFile::link(confDir, legacyDir); #endif } } diff --git a/src/gui/application.h b/src/gui/application.h index c3936da43..c5f07b5f6 100644 --- a/src/gui/application.h +++ b/src/gui/application.h @@ -113,7 +113,7 @@ private: void handleEditLocallyFromOptions(); AccountManager::AccountsRestoreResult restoreLegacyAccount(); - void setupConfigFile(); + bool setupConfigFolderFromLegacyLocation(const QString &legacyLocation) const; void setupAccountsAndFolders(); /**